import { defineStore } from "pinia"

export const useBaseStore = defineStore({
    id: "base",
    state: () => {
        return {
            includeList: [], // 缓存页面的数组
            navName: [], // 储存左侧菜单一级数组
            oneNavCur: 0,
            showStyle: true, // 风格，true只显示左侧一级，false为显示一二级导航
            seconeTitle: "",
            menu_id: "", // 菜单ID
            user_auth_applet: 0, // 用户端小程序，0是小程序未授权，1是已授权
            staff_auth_applet: 0, // 员工端小程序，0是小程序未授权，1是已授权
            supplier_auth_applet: 0, // 供应商端小程序，0是小程序未授权，1是已授权
            skill_time: [],
            versions: null, // 存储版本信息
            userinfo: null,
            cloundInfo: null, // 云仓信息

            permissions: [], // 权限标识
            menuTree:[] //登录接口返回的菜单树
        }
    },
    actions: {
        // 权限标识
        setPermissions(data) {
            this.permissions = data
        },

        setMenuTree(data){
            this.menuTree = data
        },

        setInfo(data) {
            this.userinfo = data
        },

        // 存储版本信息
        setVersions(data) {
            this.versions = data
        },

        // 存储云仓信息
        setColudInfo(data) {
            this.cloundInfo = data
        },
        delColudInfo() {
            this.cloundInfo = null
        },

        // 储存秒杀时间，（标准时间）未格式化时间
        setSkillTime(data) {
            this.skill_time = data
        },

        // 用户授权状态
        setUserAuth(data) {
            this.user_auth_applet = data
        },

        // 员工授权状态
        setStaffAuth(data) {
            this.staff_auth_applet = data
        },

        // 供应商授权状态
        setSupplierAuth(data) {
            this.supplier_auth_applet = data
        },

        // 菜单ID
        setMenuID(data) {
            this.menu_id = data
        },

        // 菜单
        setNavName(data) {
            this.navName = data
        },

        // 全局样式
        setStyle(data) {
            this.showStyle = data
        },

        setCur(data) {
            this.oneNavCur = data
        },

        // 修改左侧二级菜单头部标题
        setSecondTitle(data) {
            this.seconeTitle = data
        },

        //插入缓存数组
        setInclude(data) {
            let index = this.includeList.findIndex((item) => item === data)
            if (index == -1) {
                this.includeList.push(data)
            }
        },
        //删除对应缓存字段
        delInclude(data) {
            let index = this.includeList.indexOf(data)
            if (index > -1) {
                this.includeList.splice(index, 1)
            }
        },
        // 赋值
        getInclude(data) {
            this.includeList = data
        },

        // 用户退出，清除本地数据
        logout() {
            this.includeList = []
            this.oneNavCur = 0
            this.showStyle = true
            this.menu_id = ""
            this.cloundInfo = null
            sessionStorage.clear()
            localStorage.clear()
        },
    },
    // 开启数据缓存，在 strategies 里自定义 key 值，并将存放位置由 sessionStorage 改为 localStorage
    // 默认所有 state 都会进行缓存，你可以通过 paths 指定要持久化的字段，其他的则不会进行持久化，如：paths: ['name', 'age'] 替换key的位置
    persist: {
        enabled: true,
        strategies: [
            {
                key: "bases",
                storage: localStorage,
            },
        ],
    },
})
